// login & register
const express = require("express")
const router = express.Router()

const Profile = require("../../models/profile")
const passport = require("passport")

// $route get 请求路径：api/profiles/test
// @desc 返回请求的json数据
// @access 是否公开
router.get("/test", (req, res) => {
  res.json({ msg: "profiles success" })
})

// $route POST 请求路径：api/profiles/add
// @desc 创建信息接口
// @access private
router.post("/add", passport.authenticate("jwt", { session: false }), (req, res) => {
  const profileFields = {}
  if (req.body.type) profileFields.type = req.body.type
  if (req.body.describe) profileFields.describe = req.body.describe
  if (req.body.income) profileFields.income = req.body.income
  if (req.body.expend) profileFields.expend = req.body.expend
  if (req.body.cash) profileFields.cash = req.body.cash
  if (req.body.remark) profileFields.remark = req.body.remark

  new Profile(profileFields).save().then(profile => {
    res.json(profile)
  })
})

// $route GET 请求路径：api/profiles
// @desc 获取所有信息的接口
// @access private
router.get("/", passport.authenticate("jwt", { session: false }), (req, res) => {
  Profile.find().then(profile => {
    if (!profile) {
      return res.status(404).json("没有任何内容！")
    }
    res.json(profile)
  }).catch(err => res.status(404).json(err))

})

// $route GET 请求路径：api/profiles/:id
// @desc 获取单个信息的接口
// @access private
router.get("/:id", passport.authenticate("jwt", { session: false }), (req, res) => {
  Profile.findOne({ _id: req.params.id }).then(profile => {
    if (!profile) {
      return res.status(404).json("没有任何内容！")
    }
    res.json(profile)
  }).catch(err => res.status(404).json(err))

})

// $route POST 请求路径：api/profiles/edit/:id
// @desc 编辑信息接口
// @access private
router.post("/edit/:id", passport.authenticate("jwt", { session: false }), (req, res) => {
  const profileFields = {}
  if (req.body.type) profileFields.type = req.body.type
  if (req.body.describe) profileFields.describe = req.body.describe
  if (req.body.income) profileFields.income = req.body.income
  if (req.body.expend) profileFields.expend = req.body.expend
  if (req.body.cash) profileFields.cash = req.body.cash
  if (req.body.remark) profileFields.remark = req.body.remark

  Profile.findOneAndUpdate(
    { _id: req.params.id },
    { $set: profileFields },
    { new: true, useFindAndModify: false }
  ).then(profile => {
    res.json(profile)
  })
})

// $route delete 请求路径：api/profiles/delete/:id
// @desc 编辑信息接口
// @access private
router.delete("/delete/:id", passport.authenticate("jwt", { session: false }), (req, res) => {
  Profile.findOneAndRemove(
    { _id: req.params.id }
  ).then(profile => {
    if (!profile) {
      return res.json("要删除的项不存在！")
    }
    profile.save().then(profile => {
      res.json(profile)
    }).catch(err => {
      res.json("删除成功")
    })
  }).catch(err => {
    res.status(400).json("删除失败！")
  })
})

module.exports = router